import os
import django

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'hippo_api.settings.dev')
django.setup()

import paramiko
from paramiko.ssh_exception import AuthenticationException
from paramiko.rsakey import RSAKey
from io import StringIO


ssh = paramiko.SSHClient()
SSH_PRIVATE_KEY = open('/home/hkxpz/.ssh/id_rsa').read()  # 生产从数据库拿key
pkey = RSAKey.from_private_key(StringIO(SSH_PRIVATE_KEY), password='135135')
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 指纹记录的保存，自动做的
try:
    # ssh.connect(hostname='132.232.3.213', port=9622, username='awen', password='xxxxx..', timeout=10)  # 1. 直接密码远程连接的方式
    ssh.connect(hostname='132.232.3.213', port=9622, username='awen', pkey=pkey, timeout=10)  # 2. 使用秘钥免密登录的方式
    # Transport可以建立ssh会话长连接模式
    # Transport：是一种加密的会话，使用时会同步创建了一个加密的Tunnels(通道)，这个Tunnels叫做Channel;需要open_session来完成长连接对话。
    cli = ssh.get_transport().open_session()
    cli.settimeout(20)
    cli.exec_command('pwd')
    stdout = cli.makefile("rb", -1)
    content = stdout.read().decode()
    print(content)
    ssh.close()
except AuthenticationException as e:
    print(str(e))
